Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Pobieranie option value z <select> z bazy?
tr86
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Mam przykładowo w formularzu taką listę rozwijaną:

  1. <select name="godzina" style="width:80px;">
  2. <option value="">godzina</option>
  3. <option value="00">00</option><option value="01">01</option>
  4. <option value="02">02</option><option value="03">03</option>
  5. <option value="04">04</option><option value="05">05</option>
  6. <option value="06">06</option><option value="07">07</option>
  7. <option value="08">08</option><option value="09">09</option>
  8. <option value="10">10</option><option value="11">11</option>
  9. <option value="12">12</option><option value="13">13</option>
  10. <option value="14">14</option><option value="15">15</option>
  11. <option value="16">16</option><option value="17">17</option>
  12. <option value="18">18</option><option value="19">19</option>
  13. <option value="20">20</option><option value="21">21</option>
  14. <option value="22">22</option><option value="23">23</option>
  15. </select>


Po wybraniu jednej z opcji np. "14" dana jest zapisywana do bazy. Na osobnej stronie mam kolejny formularz i zależy mi na tym, żeby ta godzina była już ustawiona automatycznie w selekcie (coś jak selected, tylko żeby pobierało z bazy). Napewno to działa przy zwykłych polach, bo już nie raz próbowałem, problem mam z select'em. Jeżeli jest jakieś rozwiązanie, to proszę o pomoc.
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Oczywiście że jest możliwe a rozwiązań jest przynajmniej kilka. Najprostsze przy małej ilości pól -> sprawdzaj czy dana z bazy jest równa określonej wartości w value czy czymkolwiek innym. Wtedy dopisujesz tylko do tego option select="selected" i to wszystko. Coś w stylu
  1. <option value="00"<?php ( $pole_z_bazy_lub_pchnięte_inną_drogą == '00') ? ' select="selected"' : '' ?>></option>
i tak dla każdego z option. Ale można też użyć JS czy czego innego. A to przecież nie jedyne dostępne technologie i metody rozwiązania problemu smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
piotrooo89
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ja mam taki pomysł: robisz dodatkową kolumnę w bazie (np. checked) o typie bool. i tak jeśli zaznaczyłeś updatujesz dany rekord w kolumnie checked na wartość true lub 1 obojętnie, reszta ma false lub 0. i później już podczas wyświetlania sprawdzasz:

  1. echo '<select>';
  2. while ($row = mysql_fetch_array($sql))
  3. {
  4. if ($row['checked']==1)
  5. echo '<option selected="selected" value="'.$row['czas'].'">'.$row['czas'].'</option>';
  6. else
  7. echo '<option value="'.$row['czas'].'">'.$row['czas'].'</option>';
  8. }
  9. echo '</select>';


to taki mój pomysł.


--------------------
Go to the top of the page
+Quote Post
tr86
post
Post #4





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Cytat(thek @ 15.10.2009, 21:38:06 ) *
Oczywiście że jest możliwe a rozwiązań jest przynajmniej kilka. Najprostsze przy małej ilości pól -> sprawdzaj czy dana z bazy jest równa określonej wartości w value czy czymkolwiek innym. Wtedy dopisujesz tylko do tego option select="selected" i to wszystko. Coś w stylu
  1. <option value="00"<?php ( $pole_z_bazy_lub_pchnięte_inną_drogą == '00') ? ' select="selected"' : '' ?>></option>
i tak dla każdego z option. Ale można też użyć JS czy czego innego. A to przecież nie jedyne dostępne technologie i metody rozwiązania problemu smile.gif



Próbowałem tak, ale występuje błąd: Parse error: syntax error, unexpected T_LNUMBER in /var/www/sites/yoyo.pl/t/e/portal/organizowane_konf.php on line 1765

  1. <select name=rok01 style="width:50px;">
  2. <option value="">r</option>
  3. (linia 1765) <option value="2009" ("'.$rokr.' == '2009') 'selected">2009</option>
  4. <option value="2010" ("'.$rokr.' == '2010') 'selected">2010</option>
  5. <option value="2011" ("'.$rokr.' == '2011') 'selected">2011</option>
  6. <option value="2012" ("'.$rokr.' == '2012') 'selected">2012</option>
  7. </select>


Zmienne daty i godziny mam podzielone tak:

  1. $rokr=$_POST['rokr'];
  2. $miesiacr=$_POST['miesiacr'];
  3. $dzienr=$_POST['dzienr'];
  4.  
  5. $gg=$_POST['gg'];
  6. $mm=$_POST['mm'];
  7.  
  8. $data=$rokr."-".$miesiacr."-".$dzienr;
  9.  
  10. $godzina=$gg.":".$mm;


i chcę jedno po drugim wyciągać z bazy. Jesli mam date np. 2010-05-18, to chciałbym, żeby się automatycznie wybierało przez 'selected' najpierw rok, miesiąc
i dzień



Podzieliłem datę w taki sposób:

  1. $rok=$plan[6];
  2. $r=substr($rok, 0, 4);
  3.  
  4. $miesiac=$plan[6];
  5. $m=substr($miesiac, 5, 2);
  6.  
  7. $dzien=$plan[6];
  8. $d=substr($dzien, 8, 2);


i teraz jak to zrobić, żeby się automatycznie wybierało z selecta? ;/

Poniższa metoda nie działa...

  1. <select name=rok01 style="width:50px;">
  2. option value="">r</option>
  3. <option value="2009" ("'.$r.' == '2009') 'selected">2009</option>
  4. <option value="2010" ("'.$r.' == '2010') 'selected">2010</option>
  5. <option value="2011" ("'.$r.' == '2011') 'selected">2011</option>
  6. <option value="2012" ("'.$r.' == '2012') 'selected">2012</option>


napewno też są błędy w cudzysłowach i apostrofach hmm

Ten post edytował tr86 16.10.2009, 16:44:28
Go to the top of the page
+Quote Post
piotrooo89
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ale po co się aż tak męczyć, podałem Ci rozwiązanie które działa.


--------------------
Go to the top of the page
+Quote Post
tr86
post
Post #6





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Pomysł dobry, tylko nie wiem czy nie jest zbyt skomplikowany jak dla mnie.
Rozumiem, że wraz z wpisaną datą np. 2009-11-20 tworzyłby się update do kolumny checked na wartość =1,
w przeciwnym wypadku byłoby 0.
Problem w tym, że ja tą datę mam dzieloną na rok, miesiąc i dzień tak jak to wcześniej przedstawiłem...hmmm i pewnie by to kolidowało wstydnis.gif
Ale myślę, że warto spróbować tej metody..., jak wobec tego powinno wyglądać zapytanie przypisujące danej dacie wartość=1 ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:29